#ifndef NATIAVTRUSTDIALOG_H
#define NATIAVTRUSTDIALOG_H

#include "cominfo.h"
#include "widgets/defendertable.h"
#include "resultdelegate.h"
#include "antivirus/antiviruswork.h"
#include "devcommon_global.h"

#include <QVector>
#include <QWidget>
#include <QDialog>
#include <QVBoxLayout>
#include <QHBoxLayout>
#include <QLabel>
#include <QTableView>
#include <QCheckBox>
#include <QPushButton>
#include <QStandardItem>
#include <QStandardItemModel>
#include <QStackedWidget>

#include <QCheckBox>
#include <QFrame>
#include <QTableView>
//#include <QSpinner>
#include <QLabel>
#include <QTimer>

using namespace def::widgets;

QT_BEGIN_NAMESPACE
class QVBoxLayout;
class QHBoxLayout;
class QLabel;
class QPushButton;
QT_END_NAMESPACE

//using MonitorInterFaceServer = com::deepin::defender::MonitorNetFlow;
class DEVCOMMONSHARED_EXPORT DBusInvokerInterface;

/*
@classname:(NatiavTrustDialog)
@author：(mxz)
@discptions:(病毒查杀  信任区弹框)
@datatime:(04-30)
*/
class NatiavTrustDialog : public QFrame
{
    Q_OBJECT
public:
    explicit NatiavTrustDialog(AntiVirusWork *work, QWidget *parent = nullptr);
    ~NatiavTrustDialog();

    // 界面初始化
    void initGUI();

    // 初始化中间tableview布局
    QHBoxLayout *initTableWidget();

    // 判断全选按钮状态
    Q_SLOT void checkBoxAllStatus();
    // 添加
    void appendFileInfo(TrustFileInfo info);
    // 设置当前进度
    void setCurrentProcess(int nCurrent);

protected:
    void resizeEvent(QResizeEvent *event);
    bool eventFilter(QObject *obj, QEvent *event);

    void closeEvent(QCloseEvent *event);
    // 表头点击排序
    Q_SLOT void sortByTableHeaderClicked(int index);

    // 给按钮过长字符串添加省略号和提示
    void elideBtnText();

signals:
    // 移除隔离文件
    void requsetRemoveTrustFile(QString sPath);
    // 更新信任区数量
    void notifyUpdateTrustSize();

public slots:
    // 全选
    void checkAll(int status);

    // 移除信任
    void deleteTrust();

    // table表的单选
    void tableCheckItem();

    // 接受信任文件
    void receptionTrustFile(QList<TrustFileInfo> sInfos);

private:
    AntiVirusWork *m_work;
    DBusInvokerInterface *m_monitorInterFaceServer; // 流量监控dbus类

    QCheckBox *m_checkBoxAll; // 全选框
    QStandardItemModel *m_model;
    QPushButton *m_PbTrust; // 移除信任
    QTableView *m_tableView;
    QLabel *m_proLable;
    QList<TrustFileInfo> m_TrustfileInfo;
    int m_total; // 总数
    int m_curret; // 当前
    bool m_quit; // 是否退出
    bool m_loadingFlag; //加载标志
    ResultDelegate *m_delegate; //表格代理
};

#endif // NATIAVTRUSTDIALOG_H
